import * as Blockly from 'blockly';

// 导入变量功能
export function registerImportVariableBlocks(
  workspace: Blockly.WorkspaceSvg, 
  importVariableCallback: () => string | null | Promise<string | null>
) {
  // 定义自定义变量类别回调函数
  function customVariablesFlyout(workspace: Blockly.WorkspaceSvg) {
    // 获取原始变量类别内容
    let xmlList = Blockly.Variables.flyoutCategory(workspace);

    // 创建一个新的按钮用于引入变量
    const importButton = document.createElement('button');
    importButton.setAttribute('text', '引入系统变量...');
    importButton.setAttribute('callbackKey', 'IMPORT_VARIABLE');

    // 将按钮添加到第二个位置（在"创建变量"按钮之后）
    xmlList.splice(1, 0, importButton);
    
    return xmlList;
  }

  // 注册自定义变量类别回调函数
  workspace.registerToolboxCategoryCallback(
    Blockly.Variables.CATEGORY_NAME,
    customVariablesFlyout
  );

  // 注册按钮回调函数
  workspace.registerButtonCallback('IMPORT_VARIABLE', function () {
    if (importVariableCallback) {
      importVariableCallback();
    } else {
      // 如果没有提供回调函数，使用默认的提示框
      const variableName = prompt('请输入要引入的系统变量名:');
      if (variableName) {
        // 确保变量名以@开头
        const finalName = variableName.startsWith('@') ? variableName : '@' + variableName;
        workspace.createVariable(finalName);
      }
    }
  });
}